home *** CD-ROM | disk | FTP | other *** search
/ Network Supervisor's Toolkit / Network Supervisor's Toolkit.iso / tools / lu62 / psrm.c < prev    next >
C/C++ Source or Header  |  1996-07-10  |  5KB  |  225 lines

  1. /*
  2.                        PSRM
  3.    Function: this subroutine takes records from PS and then rout them
  4.              to the appropriate procedures which are responsible for
  5.              processing that records.
  6.  
  7.   CopyRight 1995. Nicholas Poljakov all rights reserved.
  8.  
  9.  */
  10. #include <state1.h>
  11. #include <stdio.h>
  12. #include <rcb.h>
  13. #include <drcb.h>
  14. #include <termps.h>
  15. #include <rpl.h>
  16. #include <nib.h>
  17. #include <tcb.h>
  18. #include <scb.h>
  19. #include <lucb.h>
  20. #include <malloc.h>
  21. #include <string.h>
  22.  
  23. int gtf();
  24. int change_ses();
  25. int rm_act_ses();
  26. int rm_deact();
  27. int unbind_pr_er();
  28. int sk_r_wt(void *);
  29. int SendBlock(void *, void *);
  30. int setrc(void *, void *);
  31. int sendhsf(void *);
  32. int sendhs(void *);
  33. int sendbm(void *, void *);
  34. int sendat(void *);
  35. int rtsend(void *);
  36. unsigned long rmfmh5(void *, void *);
  37. int recwait(void *);
  38. int rcvru(void *, void *);
  39. int rcvhs(void *, void *, void *, void *);
  40. int ralloc(void *, void *);
  41. int ps_conv(int, void *);
  42. int proterr(void *, unsigned long);
  43. int preptrcv(void *, void *);
  44. int post_rcb(void *);
  45. struct repass *postopen(void *);
  46. int phsrec(void *);
  47. int pfmh5(void *);
  48. int opndst(void *);
  49. int obtsess(void *, unsigned char);
  50. int Lrf_handler(void *);
  51. int get_sess(void *, void *);
  52. int get_attr(void *);
  53. int fsm_error(unsigned char, void *);
  54. int fsm_conv(unsigned char, unsigned char, void *);
  55. int flush (void *);
  56. int dcp(void *);
  57. int dealloc(void *);
  58. int crtp(void *);
  59. int conv(void *);
  60. int chkparm(void *, void *);
  61. int check_end(unsigned int, void *);
  62. struct rqb *call_appl(void *);
  63. int buffmng(unsigned char, void *, void *, void *, unsigned, unsigned char, unsigned);
  64. unsigned long attltck(void *);
  65. unsigned long attacheck(void *);
  66. char *cgetmem(int, int);
  67. int sendhsf(void *);
  68. int opndst(void *);
  69. int alloc_rcb(void *, void *);
  70. int allocate(void *);
  71. int clsdst(void *);
  72.  
  73.  
  74. int psrm(code, in_rec, out_rec)
  75.  
  76. int code;
  77. char *in_rec;
  78. char *out_rec;
  79.  
  80. {
  81.   struct rcb *p_rcb;
  82.   struct rcb *temp_rcb;
  83.   struct rcb *temp1_rcb;
  84.   struct rcbd *p_rcbd;
  85.   struct drcb *p_drcb;
  86.   struct termps *p_termps;
  87.   struct scb *p_scb;
  88.   struct lucb *p_lucb;
  89.   struct tcb *p_tcb;
  90.   struct tcb *temp_tcb;
  91.   struct tcb *temp1_tcb;
  92.  
  93. #if OS_TYPE == 1
  94. /*********  Trace facility **********/
  95. unsigned int rtype;   /* type of record */
  96. unsigned int pnum;    /* point number */
  97. char pname[8];        /* name of module */
  98. char *drec;           /* record for dump */
  99. int  lenr;            /* record length */
  100.  
  101. rtype = INPROC;
  102. strcpy(pname, "psrm");
  103. pnum = 1;
  104. drec = &code;
  105. lenr = sizeof(int);
  106. gtf(rtype, pname, pnum, drec, lenr);
  107. /***********************************/
  108. #endif
  109.  
  110.    switch (code)
  111.     {
  112.      case ALLOCATE_RCB:
  113.       {
  114.         alloc_rcb(in_rec, out_rec);
  115.         break;
  116.       }
  117.      case GET_SESSION:
  118.       {
  119.        get_sess(in_rec, out_rec);
  120.        break;
  121.       }
  122.      case DEALLOCATE_RCB:
  123.       {
  124.       p_drcb = (struct drcb *)in_rec;
  125.           p_rcb = p_drcb->p_rcb;
  126.           p_tcb = p_drcb->p_tcb;
  127.           temp_rcb = p_rcb -> prev;
  128.           temp1_rcb = p_rcb -> next;
  129.           if (temp_rcb != NULL) {
  130.                 temp_rcb -> next = temp1_rcb;
  131.           }
  132.           else
  133.                 p_tcb -> rcb_list_ptr = temp1_rcb;
  134.           if (temp1_rcb != NULL) {
  135.                 temp1_rcb -> prev = temp_rcb;
  136.           }
  137.           p_scb = p_rcb -> p_scb;
  138.       if (p_scb != NULL) {         /* 30.11.92 */
  139.             p_scb -> p_rcb = NULL;
  140.             p_scb -> use = FREE;
  141.       }
  142.           p_scb -> p_rcb = NULL;
  143.           p_scb -> use = FREE;
  144.           free(p_rcb);
  145.           p_tcb -> cur_conv--;
  146.         break;
  147.       }
  148.  
  149.      case TERMINATE_PS:
  150.        {
  151.         p_termps = (struct termps *)in_rec;
  152.             p_tcb = p_termps->p_tcb;
  153.             p_rcb = p_tcb -> rcb_list_ptr;
  154.             p_lucb = p_tcb -> p_lucb;
  155.             while (p_rcb != NULL) {
  156.                   p_scb = p_rcb -> p_scb;
  157.                   p_scb -> p_rcb = NULL;
  158.                   p_scb -> use = FREE;
  159.                   temp_rcb = p_rcb;
  160.                   p_rcb = p_rcb -> next;
  161.                   free(temp_rcb);
  162.             }
  163.             temp_tcb = p_tcb -> prev;
  164.             temp1_tcb = p_tcb -> next;
  165.             if (temp_tcb == NULL) {
  166.                 p_lucb -> tcb_list_ptr = temp1_tcb;
  167.             }
  168.             else
  169.                 temp_tcb -> next = temp1_tcb;
  170.             if (temp1_tcb != NULL)
  171.                 temp1_tcb -> prev = temp_tcb;
  172.             p_lucb -> cur_tps--;
  173.             free(p_tcb);
  174.             break;
  175.        }
  176.      case CHANGE_SESSION:
  177.        {
  178.         change_ses(in_rec, out_rec);
  179.         break;
  180.        }
  181.      case RM_ACTIVATE_SESSION:
  182.        {
  183.         rm_act_ses(in_rec, out_rec);
  184.         break;
  185.        }
  186.      case RM_DEACTIVATE_SESSION:
  187.        {
  188.         rm_deact(in_rec, out_rec);
  189.         break;
  190.        }
  191.      case UNBIND_PROTOCOL_ERROR:
  192.        {
  193.         unbind_pr_er(in_rec);
  194.         break;
  195.        }
  196.      }
  197.     return (0);
  198. }
  199. int change_ses(in_rec, out_rec)
  200. char *in_rec;
  201. char *out_rec;
  202.   {
  203.    return (0);
  204.   }
  205.  
  206. int rm_act_ses(in_rec, out_rec)
  207. char *in_rec;
  208. char *out_rec;
  209.   {
  210.    return (0);
  211.    }
  212.  
  213. int rm_deact(in_rec, out_rec)
  214. char *in_rec;
  215. char *out_rec;
  216.    {
  217.     return (0);
  218.     }
  219.  
  220. int unbind_pr_er(in_rec)
  221. char *in_rec;
  222.    {
  223.    return (0);
  224.     }
  225.